﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Usuario
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class Usuario : System.Web.Services.WebService {

    public Usuario () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

    [WebMethod(Description = "Metodo que devuelve un dataset con la consulta sql enviada")]
    public DataSet estandarweb(string sql, string NombreTabla)
    {
        DataSet ds = new DataSet();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        //-------------------------------------------------------------------
        SqlDataAdapter adapter = new SqlDataAdapter(sql, cn);
        cn.Open();
        adapter.FillSchema(ds, SchemaType.Source, NombreTabla);
        adapter.Fill(ds, NombreTabla);

        return ds;
    }

    [WebMethod(Description = "Metodo que se utiliza para Actualizar,Borrar e Insertar en la Tabla Usuario")]
    public void DatoUsuario(DataSet ds)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand cmdUpdate = new SqlCommand();
        SqlCommand cmdInsert = new SqlCommand();
        SqlCommand cmdDelete = new SqlCommand();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();



        //Seccion para actualizacion
        cmdUpdate.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdUpdate.Parameters.Add("@idusuario", SqlDbType.Int, 4, "IDUSUARIO");
        cmdUpdate.Parameters.Add("@nombre", SqlDbType.VarChar, 30, "NOMBRE");
        cmdUpdate.Parameters.Add("@nombrecompleto", SqlDbType.VarChar, 80, "NOMBRECOMPLETO");
        cmdUpdate.Parameters.Add("@clave", SqlDbType.VarChar, 30, "CLAVE");
        cmdUpdate.Parameters.Add("@tipo", SqlDbType.VarChar, 20, "TIPO");

        cmdUpdate.CommandType = CommandType.StoredProcedure;
        cmdUpdate.CommandText = "updateusuarios";

        da.UpdateCommand = cmdUpdate;

        //Seccion para agregar 
        cmdInsert.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdInsert.Parameters.Add("@idusuario", SqlDbType.Int, 4, "IDUSUARIO");
        cmdInsert.Parameters.Add("@nombre", SqlDbType.VarChar, 30, "NOMBRE");
        cmdInsert.Parameters.Add("@nombrecompleto", SqlDbType.VarChar, 80, "NOMBRECOMPLETO");
        cmdInsert.Parameters.Add("@clave", SqlDbType.VarChar, 30, "CLAVE");
        cmdInsert.Parameters.Add("@tipo", SqlDbType.VarChar, 20, "TIPO");

        cmdInsert.CommandType = CommandType.StoredProcedure;
        cmdInsert.CommandText = "insertusuarios";

        da.InsertCommand = cmdInsert;

        //Seccion para eliminar 
        cmdDelete.Connection = cn;
        //Se agregan todos los campos del DS como parametros del comando
        cmdDelete.Parameters.Add("@idusuario", SqlDbType.Int, 4, "IDUSUARIO");
        cmdDelete.CommandType = CommandType.StoredProcedure;
        cmdDelete.CommandText = "deleteusuarios";

        da.DeleteCommand = cmdDelete;

        if (ds.HasChanges())
        {
            da.Update(ds.Tables["USUARIOS"]);
        }
    }
    //-----------------------------------------------------------------------------------------------------------
    [WebMethod(Description = "Metodo que se utiliza para Consultar la tabla usuario")]
    public DataSet ConsultaUsuario()
    {
        DataSet ds = new DataSet();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();
        SqlDataAdapter da = new SqlDataAdapter();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;

        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "SELECTUSUARIO";
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("USUARIOS");
        //Agregar columnas al data table
        ds.Tables["USUARIOS"].Columns.Add("IDUSUARIO", typeof(int));
        ds.Tables["USUARIOS"].Columns.Add("NOMBRE", typeof(string));
        ds.Tables["USUARIOS"].Columns.Add("NOMBRECOMPLETO", typeof(string));
        ds.Tables["USUARIOS"].Columns.Add("CLAVE", typeof(string));
        ds.Tables["USUARIOS"].Columns.Add("TIPO", typeof(string));

        //Llenar el datatable
        da.Fill(ds.Tables["USUARIOS"]);

        return ds;
    }
    [WebMethod(Description = "Metodo que se utiliza para Consultar la tabla usuario")]
    public DataSet Login(string nombre,String clave)
    {
        DataSet ds = new DataSet();
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CN"].ConnectionString;
        cn.Open();
        SqlDataAdapter da = new SqlDataAdapter();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;

        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "login";
        cmd.Parameters.AddWithValue("@Nombre", nombre);
        cmd.Parameters.AddWithValue("@Clave", clave);
        da.SelectCommand = cmd;

        //Construir un datatable en el dataset
        ds.Tables.Add("USUARIOS");
        //Agregar columnas al data table
        ds.Tables["USUARIOS"].Columns.Add("IDUSUARIO", typeof(int));
        ds.Tables["USUARIOS"].Columns.Add("NOMBRE", typeof(string));
        ds.Tables["USUARIOS"].Columns.Add("NOMBRECOMPLETO", typeof(string));
        ds.Tables["USUARIOS"].Columns.Add("CLAVE", typeof(string));
        ds.Tables["USUARIOS"].Columns.Add("TIPO", typeof(string));

        //Llenar el datatable
        da.Fill(ds.Tables["USUARIOS"]);

        return ds;
    }

    
}
